It is commonly stated that a picture is worth a thousand words. This saying may be particularly true for individuals who seek to work on pre-existing codebases or to otherwise create a visual representation of a codebase binaries, or reverse engineering database. With advances in functionality of computer hardware and software, codebases have become increasingly large and complicated. Often, a number of different programmers will work with a single codebase or project. These individuals may not be familiar with all of the elements of a codebase and thus may need a general ‘map’ of a codebase, or they may need information about specific structures within the codebase. To help individuals with this problem, programs have been developed which provide graphical representations of codebases in the form of flow charts, run charts, timing charts, trees, and the like.
These programs, which provide graphical representations of codebases can generally be divided into two groups: static analysis charting programs and run time analysis charting programs. Static analysis programs are far more common but they are limited in a number of ways. Codebases undergoing static analysis may have a number of “boundaries” which the static analysis in unable to resolve. Further, static analysis lack the ability to determine the actual function of a codebase, and they may not be capable of locating bugs and the like. In addition, static codebases may not be able to focus on both an overview of a codebase as well as a specific class, function, call, algorithm, element, value, parameters, sequences, components, activities or the like.
Similarly, run time representations have a series of problems. If a system has bugs or errors such that a run cannot complete, the run time representation may fail. Further, the run may only follow a specific course of action and may not provide a full representation. Other problems may be associated with either or both of static and dynamic representations.
Thus, systems and methods are needed to overcome problems in both static and run time codebase diagrams.